﻿using System;
using System.Data.SQLite;
using System.Linq;
using System.Windows.Forms;
using Dapper;

namespace SoftLab.Formularios
{
    public partial class Pacientes : Template.Template
    {
        private static Pacientes _instance;

        public static Pacientes getInstance()
        {
            if (_instance == null || _instance.IsDisposed)
                _instance = new Pacientes();
            _instance.BringToFront();
            return _instance;
        }
        private Pacientes()
        {
            InitializeComponent();
            Cargar();
        }

        void Cargar()
        {
            using (var conexion = new SQLiteConnection(Properties.Settings.Default.ConnectionString))
            {
                conexion.Open();
                var q = "select id, nombre, apellido, edad, sexo, direccion, telefono from pacientes";
                var query = conexion.Query<Clases.Pacientes>(q);
                var pacientes = query.ToList();
                dataGridView1.DataSource = pacientes;
                conexion.Close();
            }
        }

        void Cargar(string nombre)
        {
            using (var conexion = new SQLiteConnection(Properties.Settings.Default.ConnectionString))
            {
                conexion.Open();
                var q = "select id, nombre, apellido, edad, sexo, direccion, telefono from pacientes where nombre like @Nombre";
                var query = conexion.Query<Clases.Pacientes>(q, new {Nombre = "%" + nombre + "%"});
                var pacientes = query.ToList();
                dataGridView1.DataSource = pacientes;
                conexion.Close();
            }
        }

        private void label2_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            var id = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
            var edit = new EditarPaciente(id);
            edit.ShowDialog();
            Cargar();
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            var add = new AgregarPaciente();
            add.ShowDialog();
            Cargar();
        }

        private void txtBuscar_TextChanged(object sender, EventArgs e)
        {
            Cargar(txtBuscar.Text);
        }

        private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                if (dataGridView1.CurrentRow != null)
                {
                    var id = Convert.ToInt32(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value);
                    var nombre = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value.ToString();
                    if (
                        MessageBox.Show("¿Desea borrar el paciente " + nombre + "?", "Advertencia",
                            MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        using (var conexion = new SQLiteConnection(Properties.Settings.Default.ConnectionString))
                        {
                            conexion.Open();
                            var sql = "delete from pacientes where id = @Id";
                            var i = conexion.Execute(sql, new {Id = id});
                            if (i == 0)
                                MessageBox.Show("Error al borrar el paciente.", "Error", MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                            else MessageBox.Show("Borrado correctamente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            conexion.Close();
                        }
                    }
                }
                Cargar();
            }
        }
    }
}
